// app.js
const Koa = require("koa");
const routes = require("./routers");
const app = new Koa();
const cors = require("koa2-cors");
const koaJwt = require("koa-jwt");
// secret 密钥的本质： 就是一个字符串  (需要使用 secret 秘钥进行解密)
const secretKey = "xiangyang Love you ~_~";

// 通过中间件koa-bodyparser获取post中的请求参数
const bodyparser = require("koa-bodyparser");
app.use(bodyparser());
// 解决前端跨域中间件
app.use(cors());

// logger
// 错误处理
app.use((ctx, next) => {
  return next().catch((err) => {
    if (err.status === 401) {
      ctx.status = 401;
      ctx.body = "Token过期，请重新登录";
    } else {
      throw err;
    }
  });
});
//在next() 前过滤接口 验证token是否过期-如果过期抛出异常401  unless跳过检测登录接口
app.use(
  koaJwt({ secret: secretKey }).unless({
    path: ["/login", "/email"], // unless里都只是不需要访问权限的
  })
);
// 注册路由
app.use(routes.routes(), routes.allowedMethods());

app.listen(4000, () => {
  console.log("server is running port is 4000");
});
